using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace RBAC.Domain.SmartHealthcare.Hosiptial
{
    /// <summary>
    /// 住院费用记录模型 - 记录患者住院期间的各项费用
    /// </summary>
    public class HospitalExpenseModel : BaseEntity
    {
        /// <summary>
        /// 病人卡号
        /// </summary>
        public string MedicalCard { get; set; }

        /// <summary>
        /// 患者姓名
        /// </summary>
        public string PatientName { get; set; }

        /// <summary>
        /// 住院登记ID
        /// </summary>
        public long InpatientRegistryId { get; set; }

        /// <summary>
        /// 科室名称
        /// </summary>
        public string DepartmentName { get; set; } = "未知科室";

        /// <summary>
        /// 药品或项目ID
        /// </summary>
        public long? ItemId { get; set; }

        /// <summary>
        /// 药品或项目名称
        /// </summary>
        public string ItemName { get; set; }

        /// <summary>
        /// 药品或项目类型（药品/检查/治疗/手术/其他）
        /// </summary>
        public string ItemType { get; set; }

        /// <summary>
        /// 药品规格
        /// </summary>
        public string Specification { get; set; }

        /// <summary>
        /// 单价
        /// </summary>
        public decimal UnitPrice { get; set; }

        /// <summary>
        /// 数量
        /// </summary>
        public int Quantity { get; set; }

        /// <summary>
        /// 总金额（单价 * 数量）
        /// </summary>
        public decimal TotalAmount { get; set; }

        /// <summary>
        /// 医保报销比例（0-100）
        /// </summary>
        public decimal InsuranceRatio { get; set; }

        /// <summary>
        /// 医保报销金额
        /// </summary>
        public decimal InsuranceAmount { get; set; }

        /// <summary>
        /// 自费金额
        /// </summary>
        public decimal SelfPayAmount { get; set; }

        /// <summary>
        /// 生产批号
        /// </summary>
        public string BatchNumber { get; set; }

        /// <summary>
        /// 有效期限
        /// </summary>
        public DateTime? ExpiryDate { get; set; }

        /// <summary>
        /// 药品条码
        /// </summary>
        public string Barcode { get; set; }

        /// <summary>
        /// 记账时间
        /// </summary>
        public DateTime ExpenseTime { get; set; } = DateTime.Now;

        /// <summary>
        /// 操作人员
        /// </summary>
        public string OperatorName { get; set; }

        /// <summary>
        /// 是否已推送至患者端
        /// </summary>
        public bool IsPushedToPatient { get; set; } = false;

        /// <summary>
        /// 推送时间
        /// </summary>
        public DateTime? PushTime { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string Remarks { get; set; }
    }
} 